package com.hb;

import com.hb.interfaces.Knight;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class KnightMain {
    public static void main(String[] args) throws Exception {
        // 1、Spring 通过应用上下文（Application Context）装载 bean 的定义并把它们组装起来。Spring 应用上下文全权负责对象的创建和组装。Spring 自带了多种应用上下文的实现，
        // 它们之间主要的区别仅仅在于如何加载配置。
        // 2、因为 knights.xml 中的 bean 是使用 XML 文件进行配置的，所以选择 ClassPathXmlApplicationContext 作为应用上下文相对是比较合适的。该类加载位于
        // 应用程序类路径下的一个或多个 XML 配置文件。
        // 3、在程序的入口 Main() 方法中运行 BraveKnight 时发现 PrintStream 是能注入的，但是单元测试处为什么不行？而且 XML 配置处也报错提示注入有误，那么这里为什么能成功？
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("knights.xml");
        Knight knight = context.getBean(Knight.class);
        knight.embarkOnQuest();
        context.close();
    }
}
